home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / PNL Libraries / MyEmergencyNotifier.p < prev    next >
Text File  |  1995-10-22  |  1KB  |  57 lines

  1. unit MyEmergencyNotifier;
  2.  
  3. interface
  4.  
  5.     uses
  6.         Types;
  7.  
  8.     procedure EmergencyNotify (s: Str255);
  9.  
  10. implementation
  11.  
  12.     uses
  13.         Memory, Notification, MyVersionResource;
  14.  
  15.     const
  16.         T_NMInstall = $A05E;
  17.         T_Unimplemented = $A89F;
  18.  
  19.     type
  20.         NMRecPtrPtr = ^NMRecPtr;
  21.  
  22.     procedure EmergencyNotify (s: Str255);
  23.         var
  24.             oe: OSErr;
  25.             note: NMRecPtr;
  26.             vers: versionRecord;
  27.     begin
  28.         GetVersion(vers);
  29.         s := concat(vers.name,': ',s);
  30.         if NGetTrapAddress(T_NMInstall, OSTrap) = NGetTrapAddress(T_Unimplemented, ToolTrap) then begin
  31.             SysBeep(1);   { Best we can do I guess.  Could put up the dialog box maybe?...}
  32.         end
  33.         else begin
  34.             note := NMRecPtr(NewPtrSys(sizeof(NMRec)));
  35.             if note = nil then begin
  36.                 SysBeep(1);   { Can't do much else if there isnt even room for this! }
  37.             end
  38.             else begin
  39.                 with note^ do begin
  40.                     qType := nmType;
  41.                     nmMark := 0;
  42.                     nmStr := StringPtr(NewPtrSys(length(s) + 1));
  43.                     BlockMoveData(@s, ptr(nmStr), length(s) + 1);
  44.                     nmIcon := nil;
  45.                     nmSound := nil;
  46.                     nmResp := nil;
  47.                 end;
  48.                 oe := NMInstall(note);
  49.                 if oe <> noErr then begin
  50.                     SysBeep(1);
  51.                 end;
  52.             end;
  53.         end;
  54.     end;
  55.  
  56.  
  57. end.